﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using TVDL4.VO;
using TVDL4.BUS;

namespace TVDL4
{
    public partial class frmMauVatLieu : frmParent
    {
        private MauVatLieuBUS mauVatLieuBUS;
        private Module.ClickButtonStatus flagButton = Module.ClickButtonStatus.Ngung;//co phan biet dang o trang thai ghi hay ngung
        public frmMauVatLieu()
        {
            InitializeComponent();
            mauVatLieuBUS = new MauVatLieuBUS();
        }

        private void frmMauVatLieu_Load(object sender, EventArgs e)
        {
            LoadCongViecToCombo();
            LoadDataOnFlex();
        }
        #region "Private Method"
        private void ClearControl()
        {
            txtMauVatLieu.Text = "";
            cboVatLieu.SelectedText = null;
        }
        private void UpdateControl(int index)
        {
            flexMauVatLieu.Rows[index]["MauVatLieu"] = txtMauVatLieu.Text;
            flexMauVatLieu.Rows[index]["VATLIEU"] = cboVatLieu.Text;
            flexMauVatLieu.Rows[index]["KEYSLVATLIEU"] = cboVatLieu.SelectedValue;

        }
        private void StatusButton()
        {
            if (flagButton == Module.ClickButtonStatus.Them || flagButton == Module.ClickButtonStatus.Sua)
            {
                btnThem.Text = "&Ghi";
                btnSua.Text = "&Ngưng";
                btnXoa.Enabled = false;
                btnThoat.Enabled = false;
                flexMauVatLieu.Enabled = false;
                txtMauVatLieu.Focus();

            }
            else
            {
                btnThem.Text = "&Thêm";
                btnSua.Text = "&Sửa";
                btnXoa.Enabled = true;
                btnThoat.Enabled = true;
                flexMauVatLieu.Enabled = true;

            }
        }
        private void LoadCongViecToCombo()
        {
            VatLieuBUS vatlieuBUS = new VatLieuBUS();
            cboVatLieu.ClearItems();
            cboVatLieu.DefColWidth = 100;
            cboVatLieu.AllowSort = true;
            cboVatLieu.DataSource = vatlieuBUS.GetListVatLieu();
            cboVatLieu.Columns[0].DataWidth = 0;


            //cboVatLieu.Columns[1].Caption = "vatlieu";

        }
        private void LoadDataOnFlex()
        {
            flexMauVatLieu.Rows.Count = 1;
            List<MauVatLieuVO > lstMauVatLieu = mauVatLieuBUS.GetListMauVatLieu();
            foreach (MauVatLieuVO mauVatLieu in lstMauVatLieu)
            {
                flexMauVatLieu.Rows.Count++;
                flexMauVatLieu.Rows[flexMauVatLieu.Rows.Count - 1]["STT"] = flexMauVatLieu.Rows.Count - 1;
                flexMauVatLieu.Rows[flexMauVatLieu.Rows.Count - 1]["KEYSL"] = mauVatLieu.KeySL;
                flexMauVatLieu.Rows[flexMauVatLieu.Rows.Count - 1]["MauVatLieu"] = mauVatLieu.TenMauVatLieu;
                flexMauVatLieu.Rows[flexMauVatLieu.Rows.Count - 1]["KEYSLVATLIEU"] = mauVatLieu.LoaiVatLieu.KeySL;
                flexMauVatLieu.Rows[flexMauVatLieu.Rows.Count - 1]["VATLIEU"] = mauVatLieu.LoaiVatLieu.TenVatLieu;
            }
        }

        #endregion

        private void flexThiNghiem_AfterRowColChange(object sender, C1.Win.C1FlexGrid.RangeEventArgs e)
        {
            if (flexMauVatLieu.Selection.TopRow >= 1 && flexMauVatLieu.Rows[flexMauVatLieu.Selection.TopRow]["MauVatLieu"] != null)
            {
                txtMauVatLieu.Text = flexMauVatLieu.Rows[flexMauVatLieu.Selection.TopRow]["MauVatLieu"].ToString();
                cboVatLieu.SelectedValue = flexMauVatLieu.Rows[flexMauVatLieu.Selection.TopRow]["KEYSLVATLIEU"].ToString();
            }
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            if (flexMauVatLieu.Selection.TopRow >= 1 && flexMauVatLieu.Rows[flexMauVatLieu.Selection.TopRow]["KEYSL"].ToString() != "")
            {
                if (mauVatLieuBUS.DeleteRecord(flexMauVatLieu.Rows[flexMauVatLieu.Selection.TopRow]["KEYSL"].ToString()))
                {
                    flexMauVatLieu.Rows.Remove(flexMauVatLieu.Selection.TopRow);
                    ClearControl();
                }

            }
        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            switch (flagButton)
            {
                case Module.ClickButtonStatus.Ngung:
                    flagButton = Module.ClickButtonStatus.Sua;
                    break;
                case Module.ClickButtonStatus.Sua:
                    flagButton = Module.ClickButtonStatus.Ngung;
                    break;
                case Module.ClickButtonStatus.Them:
                    flagButton = Module.ClickButtonStatus.Ngung;
                    break;

            }
            StatusButton();
        }

        public  void btnThem_Click(object sender, EventArgs e)
        {
            MauVatLieuVO mauVatLieuVO;
            switch (flagButton)
            {
                case Module.ClickButtonStatus.Ngung:
                    flagButton = Module.ClickButtonStatus.Them;
                    ClearControl();
                    break;
                case Module.ClickButtonStatus.Them:
                    mauVatLieuVO = new MauVatLieuVO(null, txtMauVatLieu.Text, new VatLieuVO(cboVatLieu.SelectedValue.ToString(), ""));
                    mauVatLieuVO = mauVatLieuBUS.InsertRecord(mauVatLieuVO);
                    if (mauVatLieuVO == null)
                        MessageBox.Show("Không ghi được dữ liệu", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    else
                    {
                        flexMauVatLieu.Rows.Count++;
                        flexMauVatLieu.Rows[flexMauVatLieu.Rows.Count - 1]["STT"] = flexMauVatLieu.Rows.Count - 1;
                        flexMauVatLieu.Rows[flexMauVatLieu.Rows.Count - 1]["KEYSL"] = mauVatLieuVO.KeySL;
                        flexMauVatLieu.Rows[flexMauVatLieu.Rows.Count - 1]["MauVatLieu"] = mauVatLieuVO.TenMauVatLieu;
                        flexMauVatLieu.Rows[flexMauVatLieu.Rows.Count - 1]["KEYSLVATLIEU"] = mauVatLieuVO.LoaiVatLieu.KeySL;
                        flexMauVatLieu.Rows[flexMauVatLieu.Rows.Count - 1]["VatLieu"] = cboVatLieu.Text; ;
                        ClearControl();
                    }
                    flagButton = Module.ClickButtonStatus.Ngung;
                    break;
                case Module.ClickButtonStatus.Sua:
                    mauVatLieuVO = new MauVatLieuVO(flexMauVatLieu.Rows[flexMauVatLieu.Selection.TopRow]["KEYSL"].ToString(), txtMauVatLieu.Text, new VatLieuVO(cboVatLieu.SelectedValue.ToString(), ""));
                    mauVatLieuBUS.UpdateRecord(mauVatLieuVO);
                    UpdateControl(flexMauVatLieu.Selection.TopRow);
                    flagButton = Module.ClickButtonStatus.Ngung;
                    break;


            }
            StatusButton();
        }
    }
}
